#include <iostream>
#include <thread>
#include <future>
#include <chrono>

// 加法函数：模拟耗时操作（睡眠5秒）
int Add(int num1, int num2) {
    std::cout << "加法!!1111\n";
    std::this_thread::sleep_for(std::chrono::seconds(5));  // 模拟耗时任务
    std::cout << "加法!!2222\n";
    return num1 + num2;
}

int main()
{
    std::cout << "--------1----------\n";
    
    // 使用std::async启动异步任务
    // policy = std::launch::async：强制在新线程中执行
    std::future<int> result = std::async(std::launch::async, Add, 11, 22);
    
    // 主线程睡眠1秒（模拟其他工作）
    std::this_thread::sleep_for(std::chrono::seconds(1));
    std::cout << "--------2----------\n";
    
    // 阻塞等待异步任务完成并获取结果
    int sum = result.get();
    std::cout << "--------3----------\n";
    
    std::cout << sum << std::endl;
    return 0;
}